package com.sb.framework.util;

import java.io.File;
import java.io.FileOutputStream;
import java.util.List;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Document;
import com.itextpdf.text.Element;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
import com.itextpdf.text.pdf.PdfWriter;

public class PdfUtils {
	
	public static final String TAG_TENDERS = "%tenderList%";
	
	// 表格的设置
	private static final int spacing = 1;

	// 表格的设置
	private static final int padding = 1;
	
	private static final String OWNERPASSWORD="rb1234p2p"; 

	/**
	 * 创建PDF文件
	 * 
	 * @param file
	 *            临时文件
	 * @return 成功/失败
	 */
	public static boolean createPDFFile(File file,List<String[]> list,String content) {
				
		Document document = new Document(PageSize.A4);
		try {
			// 使用PDFWriter进行写文件操作
			PdfWriter.getInstance(document, new FileOutputStream(file));
			document.open();
			// 中文字体
			BaseFont bfChinese = BaseFont.createFont("STSong-Light",
					"UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
			Font fontChinese = new Font(bfChinese, 12, Font.BOLD);
			// 创建有colNumber(8)列的表格
			PdfPTable datatable = null;
			if(list != null && list.size()>0){
				datatable = new PdfPTable(list.get(0).length);
				// 定义表格的宽度
		//		int[] cellsWidth = { 5, 4, 4, 4, 5, 5, 5, 5 };
		//		datatable.setWidths(cellsWidth);
				// 表格的宽度百分比
				datatable.setWidthPercentage(100);
				datatable.getDefaultCell().setPadding(padding);
				datatable.getDefaultCell().setBorderWidth(spacing);
				// 设置表格的底色
				datatable.getDefaultCell().setBackgroundColor(BaseColor.WHITE);
				datatable.getDefaultCell().setHorizontalAlignment(
						Element.ALIGN_CENTER);
				// 添加表头元素
//				for (int i = 0; i < tableHeader.length; i++) {
//					datatable.addCell(new Paragraph(tableHeader[i], fontChinese));
//				}
				// 添加列表
				for(int j=0;j<list.size();j++){
					String[] tab = list.get(j);
					for(int i=0;i<tab.length;i++){
						datatable.addCell(new Paragraph(tab[i], fontChinese));
					}
				}
			}
			
			if(content.contains(TAG_TENDERS)){
				String[] contents = content.split(TAG_TENDERS);
				Paragraph pf = new Paragraph(contents[0], fontChinese);
		//		pf.setAlignment(Element.ALIGN_CENTER);
		//		pf.setSpacingAfter(10f);
				document.add(pf);	
				if(datatable != null)
					document.add(datatable);
				document.add(new Paragraph(contents[1], fontChinese));
			}else{
				document.add(new Paragraph(content, fontChinese));
			}
			
			document.close();
			return true;
		} catch (Exception e) {
			
			return false;
		}

	}
	
	public static void waterMark(String inputFile, String imageFile,
			String outputFile) {
		try {
			PdfReader reader = new PdfReader(inputFile, "WorldPass".getBytes());// 选择需要印章的pdf
			PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(
					outputFile));// 加完印章后的pdf
			PdfContentByte over = stamp.getOverContent(1);// 设置在第几页打印印章
			Image image = Image.getInstance(imageFile);// 选择图片
			image.setAlignment(1);
			image.scaleAbsolute(220, 220);// 控制图片大小
			image.setAbsolutePosition(200, 300);// 控制图片位置
			over.addImage(image);
			stamp.close();
		} catch (Exception e) {
			e.printStackTrace();
			
		}

	}
	
	/**
	 * pdf加密
	 * @param inputFile
	 * @param imageFile
	 * @param outputFile
	 * @param password
	 */
	public static void waterMark(String inputFile, String imageFile,
			String outputFile,String password) {
		try {
			PdfReader reader = new PdfReader(inputFile, "WorldPass".getBytes());// 选择需要印章的pdf
			PdfStamper stamp = new PdfStamper(reader, new FileOutputStream(
					outputFile));// 加完印章后的pdf
			// 设置密码
			stamp.setEncryption(PdfWriter.ENCRYPTION_AES_128, password, OWNERPASSWORD, PdfWriter.AllowPrinting);
			PdfContentByte over = stamp.getOverContent(1);// 设置在第几页打印印章  
			Image image = Image.getInstance(imageFile);// 选择图片
			image.setAlignment(1);
			image.scaleAbsolute(220, 220);// 控制图片大小
			image.setAbsolutePosition(200, 300);// 控制图片位置
			over.addImage(image);
			stamp.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	

}




